package com.tt.common.page;

import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 移动端显示的分页
 * @author 青青
 */
@Data
public class PageBan<T> implements Serializable
{
    /**
     * 每页数据大小
     */
    private int pageSize;

    /**
     * 上一页
     */
    private int prePage;

    /**
     * 下一页
     */
    private int nextPage;

    /**
     * 当前页
     */
    private int currentPage = 1;

    /**
     * 总页数
     */
    private int totalPage ;

    /**
     * 总记录数
     */
    private int totalRecord;

    /**
     * 页面数据
     */
    List<T> list ;

    /**
     * 页码
     */
    int pageBar[] = new int[10];


    /**
     * 获取总页数
     * 1.如果总的记录数 / 每页大小 余 0 说明这页数据刚刚等于总记录数
     * 2.如果不是余0 说明未除尽，还比总记录数多一点 则 + 1
     * @return
     */
    public int getTotalPage()
    {
        if(this.totalRecord % this.pageSize == 0 )
        {
            this.totalPage = this.totalRecord / this.pageSize;
        }
        else{
            this.totalPage = this.totalRecord / this.pageSize + 1;
        }
        return totalPage;
    }

    /**
     * 重写获取上一页
     * @return
     */
    public int getPrePage()
    {
        if(this.currentPage - 1 < 1 )
        {
            this.prePage = 1;
        }
        else{
            this.prePage = this.currentPage-1;
        }
        return prePage;
    }

    /**
     * 重写获取下一页
     * @return
     */
    public int getNextPage()
    {
        if(this.currentPage + 1 >= this.totalPage)
        {
            this.nextPage = this.totalPage;
        }
        else{
            this.nextPage = this.currentPage +1;
        }
        return nextPage;
    }


    /**
     * 重写获取页码方法
     * @return
     */
    public int[] getPageBar()
    {
        //开始页码
        int startpage;

        //结束页码
        int endpage;

        //
        int pageBar[] = null;

        if(this.totalPage <= 10)
        {
            pageBar = new int[this.totalPage];
            startpage = 1;
            endpage = this.totalPage;
        }
        else {
            pageBar = new int[10];
            startpage = this.currentPage - 4;
            endpage = this.currentPage + 5;

            //总页数=30      3    -1
            //总页数=30      29   34   21   30
            if(startpage<1)
            {
                startpage = 1;
                endpage = 10;
            }

            if(endpage>this.totalPage)
            {
                endpage = this.totalPage;
                startpage = this.totalPage - 9;
            }
        }

        int index = 0;
        for(int i=startpage;i<=endpage;i++)
        {
            pageBar[index++] = i;
        }

        this.pageBar = pageBar;
        return this.pageBar;
    }
}
